package com.example.project.entity;

import java.math.BigDecimal;
import java.time.LocalDateTime;

import com.example.project.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;

/**
 * 需求类别处理统计对象 t_issue_category_stats
 */
public class IssueCategoryStats extends BaseEntity {
    
    private static final long serialVersionUID = 1L;
    
    /** 主键ID */
    private Long id;
    
    /** 类别ID */
    private Long categoryId;
    
    /** 跟踪类型ID */
    private Long trackerId;
    
    /** 优先级ID */
    private Long priorityId;
    
    /** 项目ID */
    private Long projectId;
    
    /** 样本数量 */
    private Integer sampleCount;
    
    /** 平均处理时长(小时) */
    private BigDecimal avgProcessingTimeHours;
    
    /** 最短处理时长(小时) */
    private BigDecimal minProcessingTimeHours;
    
    /** 最长处理时长(小时) */
    private BigDecimal maxProcessingTimeHours;
    
    /** 一次通过率(%) */
    private BigDecimal successRate;
    
    /** 返工率(%) */
    private BigDecimal retryRate;
    
    /** 最后更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime lastUpdated;
    
    /** 关联信息 - 类别名称 */
    private String categoryName;
    
    /** 关联信息 - 跟踪类型名称 */
    private String trackerName;
    
    /** 关联信息 - 优先级名称 */
    private String priorityName;
    
    /** 关联信息 - 项目名称 */
    private String projectName;
    
    // Getters and Setters
    public Long getId() {
        return id;
    }
    
    public void setId(Long id) {
        this.id = id;
    }
    
    public Long getCategoryId() {
        return categoryId;
    }
    
    public void setCategoryId(Long categoryId) {
        this.categoryId = categoryId;
    }
    
    public Long getTrackerId() {
        return trackerId;
    }
    
    public void setTrackerId(Long trackerId) {
        this.trackerId = trackerId;
    }
    
    public Long getPriorityId() {
        return priorityId;
    }
    
    public void setPriorityId(Long priorityId) {
        this.priorityId = priorityId;
    }
    
    public Long getProjectId() {
        return projectId;
    }
    
    public void setProjectId(Long projectId) {
        this.projectId = projectId;
    }
    
    public Integer getSampleCount() {
        return sampleCount;
    }
    
    public void setSampleCount(Integer sampleCount) {
        this.sampleCount = sampleCount;
    }
    
    public BigDecimal getAvgProcessingTimeHours() {
        return avgProcessingTimeHours;
    }
    
    public void setAvgProcessingTimeHours(BigDecimal avgProcessingTimeHours) {
        this.avgProcessingTimeHours = avgProcessingTimeHours;
    }
    
    public BigDecimal getMinProcessingTimeHours() {
        return minProcessingTimeHours;
    }
    
    public void setMinProcessingTimeHours(BigDecimal minProcessingTimeHours) {
        this.minProcessingTimeHours = minProcessingTimeHours;
    }
    
    public BigDecimal getMaxProcessingTimeHours() {
        return maxProcessingTimeHours;
    }
    
    public void setMaxProcessingTimeHours(BigDecimal maxProcessingTimeHours) {
        this.maxProcessingTimeHours = maxProcessingTimeHours;
    }
    
    public BigDecimal getSuccessRate() {
        return successRate;
    }
    
    public void setSuccessRate(BigDecimal successRate) {
        this.successRate = successRate;
    }
    
    public BigDecimal getRetryRate() {
        return retryRate;
    }
    
    public void setRetryRate(BigDecimal retryRate) {
        this.retryRate = retryRate;
    }
    
    public LocalDateTime getLastUpdated() {
        return lastUpdated;
    }
    
    public void setLastUpdated(LocalDateTime lastUpdated) {
        this.lastUpdated = lastUpdated;
    }
    
    public String getCategoryName() {
        return categoryName;
    }
    
    public void setCategoryName(String categoryName) {
        this.categoryName = categoryName;
    }
    
    public String getTrackerName() {
        return trackerName;
    }
    
    public void setTrackerName(String trackerName) {
        this.trackerName = trackerName;
    }
    
    public String getPriorityName() {
        return priorityName;
    }
    
    public void setPriorityName(String priorityName) {
        this.priorityName = priorityName;
    }
    
    public String getProjectName() {
        return projectName;
    }
    
    public void setProjectName(String projectName) {
        this.projectName = projectName;
    }
}